import {fileURLToPath, URL} from 'node:url'

import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import zipPack from 'vite-plugin-zip-pack'

// https://vitejs.dev/config/
export default defineConfig({
    plugins: [
        vue(),
        zipPack({
            outDir: 'black',
            inDir: 'black',
            // 输出 zip 名称
            outFileName: '../black.zip'
        }),
    ],
    resolve: {
        alias: {
            '@': fileURLToPath(new URL('./src', import.meta.url)),
        }
    },
    server: {
        host: 'localhost',
        port: 18080,
        open: true,
        proxy: {
            '/apis': {
                // target: 'http://localhost:18888',
                target: 'https://blackovo.top/apis',
                changeOrigin: true,
                rewrite: (path) => path.replace(/^\/apis/, '/')
            },
        }
    },
    //  构建
    build: {
        outDir: 'black', //指定打包输出路径
        //指定静态资源存放路径
        assetsDir: 'static',
        // css代码拆分,禁用则所有样式保存在一个css里面
        cssCodeSplit: true,
        // 是否构建source map 文件
        sourcemap: false,
        // 是否最小化最终的构建文件
        minify: 'terser',
        // 禁用资源内联, 0 表示禁用内联
        // 否则表示指定字节数以下的资源文件内联为base64
        assetsInlineLimit: 0,
        // 生产环境取消 console
        terserOptions: {
            compress: {
                drop_console: true,
                drop_debugger: true
            }
        },
        // 打包前是否清空输出目录
        emptyOutDir: true,
        // 会打包出 css js 等文件夹 目录显得清晰
        rollupOptions: {
            output: {
                chunkFileNames: 'js/[name]-[hash].js',
                entryFileNames: 'js/[name]-[hash].js',
                assetFileNames: '[ext]/[name]-[hash].[ext]'
            }
        }
    }
})
